bitkeeper revision 1.1382 (426d084fj_L9HqLwTZs1okz5LbnXcg)
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 25 Apr 2005 15:10:07 +0000 (15:10 +0000)
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>
Mon, 25 Apr 2005 15:10:07 +0000 (15:10 +0000)
Fix writable pagetables for uniproc domains such that we don't use the
emulation path every time.
Signed-off-by: Keir Fraser <keir@xensource.com>
xen/arch/x86/mm.c

index e4f989ad5e65c63d98821ad5bbe929f6a8f87f17..fdf2d8af713e25cd96a4d6cb60939558d4c66dfb 100644 (file)
@@ -2802,7 +2802,11 @@ int ptwr_do_page_fault(struct domain *d, unsigned long addr)
      * update to ensure we make progress.
      */
     if ( d->arch.ptwr[which].prev_nr_updates == 0 )
+    {
+        /* Ensure that we don't get stuck in an emulation-only rut. */
+        d->arch.ptwr[which].prev_nr_updates = 1;
         goto emulate;
+    }
 
     d->arch.ptwr[which].l1va   = addr | 1;
     d->arch.ptwr[which].l2_idx = l2_idx;